package com.cskaoyan.operator;

/*
        算数运算符:
        1. + 运算符
           a. 正号
           b. 普通的加法运算
           c. 字符串的拼接

          凡是有字符串参与的+运算，都是字符串拼接的运算，
          当参与运算的操作数都是数值型数据时，才会执行数值加法

       2. / 除法运算
          a. 当参与运算的操作数都是整数时，运算结果会丢弃小数部分，只保留整数部分
          b. 如果说我们希望/运算的结果是一个小数，可以通过强制类型转化 也可以 隐式类型转化

      3. %  取模(求除法运算余数)


      4. ++和--
            (++或--)单独使用效果自增(自减), 若参与运算，位置不同，效果不同

            ++(--)：单目运算符，只针对一个操作数，让操作数的结果自增1(自减1)
            a. ++(--)放在操作数之前使用： ++a(--a)
            b. ++(--)放在操作数之后使用:  a++(a--)

            c. 但是，当自增(自减)运算，并非单独存在，而是参与其他的运算，此时++(--)在前或者在后，会影响
               其他运算的结果
               1）当++(--)在前的时候，操作数是先自增(自减), 自增(自减)之后的结果，在参与其他运算
               2）当++在后的时候，操作数先参与其他运算，在自增1(自减1)

               ++(--)影响的是自增(自减)时机

 */
public class Arithmetic {

    public static void main(String[] args) {

        // + 表示 正号
//        int a = +3;
//        int b = +a;

        // - 表示负号
//        a = -10;

        // 普通加法运算
//        int c = 10 + a;
//        System.out.println(c);
//
//        // 字符串的加法（字符串的拼接）
//        System.out.println("hello " + "world");// hello world
//
//        // 字符串拼接的练习
//        System.out.println("hello"+'a'+1);  //helloa1
//        // 'a' + 1 字符对用的整数值 97 + 1
//        System.out.println('a'+1+"hello");// 98hello
//        System.out.println("5+5="+5+5);// 5+5=55
//        System.out.println(5+5+"=5+5");// 10=5+5

        // 除法运算
        int aValue = -3;
        int bValue = 2;

        int intResult = aValue / bValue;

        // 强制类型转化
        // 这里是对aValue做了类型转化
        double doubleResult = (double) aValue / bValue;

        //隐式类型转化
 //      double doubleResult = 1.0 * aValue / bValue;
//        System.out.println( intResult); // 1
//        System.out.println(doubleResult);

        // % 运算
        int a1 = 10;
        int a2 = 3;

        int aResult = a1 % a2;
        //System.out.println(aResult); // 1

        // ++（--）单独运算
        int c1 = 1;
        //c1++;
        ++c1;
        //System.out.println(c1); // 2

        int c2 = 10;
        //c2--;
        --c2;
        //System.out.println(c2--); //9

        //  ++（--）参与其他运算
//        int c3 = 10;
//        int result;
        // ++在后
        // 如果++在变量的后面，参与其他运算的时候，先用当前的变量值先参与运算，后自增1
//        result = c3++ + 10;
//        System.out.println(result); // 20
//        System.out.println(c3);

        //c3 = 10;
        // ++在前
        // 如果++写在变量的前面，参与其他运算的时候，先自增1，然后自增之后的值参与运算
//        result = ++c3 + 10;
//        System.out.println(result);//21
//        System.out.println(c3);

        //练习
        int a = 4;
        //      4  +  6   +  60
        int b = a++ + ++a + a*10;
        //System.out.println(b); //70


        int d1 = 3;
        int d2 = 2;
        double dResult = (double)(d1 / d2);
        System.out.println(dResult);


    }
}
